const express = require('express');
//引入连接池模块
const pool = require('../pool.js')
//创建路由器对象
const r = express.Router();
//使用中间件将post请求的参数（body）转为对象，req.body
r.use(express.urlencoded({
    extended:false
}))


//1.注册成功（post  /reg）
//接口地址：http://127.0.0.1:8080/v1/users/reg
//请求方式：post
r.post('/reg',(req,res,next)=>{
    //1.1获取post传递（body）的参数
    var obj = req.body
    //console.log(obj)
    //1.2判断各项是否为空
    if(!obj.uname){
        res.send({code:401,msg:'用户名不能为空'})
    }
    if(!obj.upwd){
        res.send({code:402,msg:'密码不能为空'})
    }

    //验证手机号码格式
    /^1[3-9]\d{9}$/
    if(!/^1[3-9]\d{9}$/.test(req.body.phone)){
        res.send({code:401,msg:'手机号码格式错误'})
    }
    pool.query('insert into xz_user set?',[req.body],(err,result)=>{
        if(err) {
            next(err);
            return
        }
        res.send({code:200,msg:'成功'})
    })
    
})
//注册结束
//2.删
//查询有没有：select * from xz_user where uname = 'tao' and upwd = '1233'，如果是空，就失败，如果查到了数据，就登录成功
//练习：添加删除员工接口(delete  /v1/emps/编号) ，获取传递的编号，执行SQL命令删除编号对应的员工，如果删除成功{code:200,msg:'删除成功'}  否则失败{code:201,msg:'删除失败'}
//接口地址：http://127.0.0.1:8080/v1/users/shan
//请求方式：delete
r.delete('/:uid',(req,res,next)=>{
    console.log(req.params)
    pool.query('delete from xz_user where uid =?',[req.params.uid],(err,result)=>{
        if(err){
            next(err);
            return;
        }
        console.log(result)
        if(result.affectedRows===0){
            res.send({code:201,msg:'删除失败'})
        }else{
            res.send({code:200,msg:'删除成功'})
        }
    })
})
//3.改
//添加修改员工的接口(put  /v1/emps)，通过body传递(post方式) ，获取传递的数据(req.body)，执行SQL命令，修改数据，如果修改成功{code:200,msg:'修改成功'}  否则失败{code:201,msg:'修改失败'}
//接口地址：http://127.0.0.1:8080/v1/users/gai
r.put('/',(req,res,next)=>{
    console.log(req.body)
    var i = 400;
    for(var k in req.body){
        //k属性名  req.body[k]属性值
        //如果属性值为空，提示属性名这项不能为空
        i++
        if(!req.body[k]){
            res.send({code:i,msg:k+'不能为空'})
            return;
        }
    }
    pool.query('update xz_user set? where uid =?',[req.body,req.body.uid],(err,result)=>{
        if(err){
            next(err);
            return;
        }
        if(result.affectedRows===0){
            res.send({code:201,msg:'修改失败'})
        }else{
            res.send({code:200,msg:'修改成功'})
        }
    })
})

//4.登录 查
//登录界面 用户登录
//接口地址：http://127.0.0.1:8080/v1/users/cha
r.post('/cha',(req,res,next)=>{
    console.log(req.body);
    if(!obj.uname){
        res.send({code:401,msg:'用户名不能为空'});
    }
    if(!obj.upwd){
        res.send({code:402,msg:'密码不能为空'});
    }
    pool.query('select * from xz_user where uname =? and upwd = ?',[req.body.uname,req.body.upwd],(err,result)=>{
        if(err){
            next(err);
            return;
        }
        console.log(result);
        //查询的结果是数组，如果是空数组说明登录失败，否则说明登录成功
        if(result.length===0){
            res.send({code:201,msg:'登录失败'});
        }else{
            res.send({code:200,msg:'登录成功'});
        }
    })
})

//1.作业：用户列表（get  /）获取get传递的参数（req.body），如果页码为空默认为第一页，如果每页数据量为空，默认为5,执行sql命令，进行分页查询，把查询的数据响应到客户端
//{code:200,msg:''}
//http://127.0.0.1:8080/v1/users?pno=1&count=5
r.get('/',(req,res,next)=>{
    console.log(req.query)
    pool.query('select * from xz_user limit ?,?',[Number(req.query.pno),Number(req.query.count)],(err,result)=>{
        if(err){
            next(err);
            return;
        }
    res.send({code:200,msg:'用户列表', data: result})
    })
})
//2.验证用户名是否可用(get  /checkuser)，获取get传递的参数，验证是否为空，执行SQL命令查询是否存在该用户
//http://127.0.0.1:8080/v1/users/checkuser?uname=tao
r.get('/checkuser',(req,res,next)=>{
    console.log(req.query)
    pool.query('select * from xz_user where uname =?',[req.query.uname],(err,result)=>{
        if(err){
            next(err);
            return;
        }
        console.log(result)
        if(result.length!==0){
            res.send({code:201,msg:'该用户已被注册'})
        }else{
            res.send({code:200,msg:'该用户未被注册，可以使用'})
        }
    })
})
//3.3.验证邮箱是否可用(get  /checkemail)，获取get传递的参数，验证是否为空，执行SQL命令查询是否存在该邮箱
// http://127.0.0.1:8080/v1/users/checkemail?email=tao@1.com
r.get('/checkemail',(req,res,next)=>{
    console.log(req.query)
    pool.query('select * from xz_user where email =?',[req.query.email],(err,result)=>{
        if(err){
            next(err);
            return;
        }
        console.log(result)
        if(result.length!==0){
            res.send({code:201,msg:'该邮箱已被注册'})
        }else{
            res.send({code:200,msg:'邮箱未被注册，可以使用'})
        }
    })
})

//3.验证邮箱是否可用
module.exports=r;